Halo and REAPER

Halo works in REAPER too. Out of the box, REAPER gives VoiceOver one long flat list of every control in the window, and a lot of them don't have names. Halo sorts that out into groups you can actually move through:

Tracks has each track by number and name, and what kind of track it is, audio, MIDI, instrument, aux, folder or master. REAPER doesn't really have track types, so Halo figures it out from what's on the track. Inside each track you get the name, record arm, record monitor, mute, solo, volume, meter, effects and FX bypass. Mute, solo, arm and FX bypass are checkboxes so they tell you if they're on. Volume is in dB and moves 1 dB at a time, pan is a percentage left or right and moves 5% at a time, and the meter reads the current peak.

Mixer and Master are the mixer strips, and they work the same way.

Arrange has the items on each track from left to right, with the name and the bar it starts on, and whether it's selected, muted or locked. The hint tells you how long it is. VO+Space selects the item and its track and puts the edit cursor at the start of it, and doing it again on an item that's already selected unselects it.

Transport is a toolbar with the play controls, Repeat as a checkbox, and Position, which gives you where the playhead is and whether REAPER is playing, paused, recording or stopped. Tempo, time signature and play rate are read out in words.

Main is the main toolbar, in the order the buttons are on screen, row by row.

Empty layout boxes, unnamed buttons that don't do anything, and REAPER's help line under the tracks are hidden from VoiceOver. None of this changes anything on screen.

Speech and Keys

Halo has its own versions of OSARA's actions, and they use the same action names, so the OSARA key map works with Halo as is. If you have OSARA installed, Halo leaves the speech and the keys to OSARA and just fixes what the VoiceOver cursor finds. If you don't, Halo does the talking.

After you run a REAPER action, Halo tells you what changed, whether that's tracks getting selected, muted, soloed or armed, items being added or moved, the edit cursor or time selection moving, or something being turned on or off. A macro only gets reported once, after it finishes. The report actions are there too, cursor position, project length, which tracks are muted, soloed, armed or monitored, ripple mode, automation mode, tempo and time signature, and what's at the cursor.

Parameters for a track, an item or its effects come up in a plain window, Control+Tab moves between parameters and the arrow keys change the one you're on. Item properties, the three context menus, Peak Watcher, envelopes and envelope points, and shortcut help all work as well.

A few of OSARA's actions aren't done yet, like transients, stepped zoom, loudness statistics and settings. If you hit one of those it says "not in Halo yet."

MIDI Editor

In the MIDI editor, Left and Right Arrow move by chord. A single note gets read by name, like "D4, beat 2," and a chord tells you how many notes are in it, like "3 notes, beat 1." Up and Down Arrow go through the notes in the chord from lowest to highest and give you each note and how long it is. Add Shift to keep what you already had selected, and Shift+Space adds the note or chord you're on to the selection or takes it out. CC events have their own keys and Halo tells you what each one is, like "sustain 127, beat 2." You can also jump to the next or previous MIDI item on the track.

You hear the notes as you move to them, they play through whatever instrument is on the track, and on a chord you get the whole chord. They also play when you put in a note or move one up or down. That's only while REAPER is stopped, and each note cuts off after about a second.

When you use REAPER's own MIDI editor actions, Halo tells you what happened, notes added, deleted or moved, and changes to pitch, length, velocity, mute, the grid or the note length.

Installing It

Halo puts this into REAPER for you. The first time, you'll need to restart REAPER so it loads, and after that Halo updates it without a restart.